<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>元字符_字符类</title>
</head>
<body>
<h3>元字符-字符类</h3>
<p>
    1. [ ] 匹配字符集合 <br>
    后面的字符串只要包含 [ ] 中任意 一个字符，都返回 true
</p>
<hr>

<p>
    2. [ ] 里面加上 - 连字符 <br>
    使用连字符 - 表示一个范围
</p>
<p>
    比如： <br>
    [a-z] 表示 a 到 z 26个英文字母都可以 <br>
    [a-zA-Z] 表示大小写都可以 <br>
    [0-9] 表示 0~9
</p>
<hr>

<p>
    3. [ ] 里面加上 ^ 取反符号 <br>
    比如： <br>
    [^a-z] 匹配除了小写字母以外的字符 <br>
    注意要写到中括号里面
</p>
<hr>

<p>
    . 匹配除换行符之外的任何单个字符
</p>
<hr>
<hr>


<h3>预定义类：指的是 某些常见模式的</h3>
<pre style="font-size: 20px;">
预定类	    说明
\d	    匹配0-9之间的任一数字, 相当于[0-9]
\D	    匹配所有0~9以外的字符, 相当于[^0-9]
\w	    匹配任意的字母,数字,和下划线, 相当于[A-Za-z0-9]
\W	    除所有字母数字和下划线以外的字符相当于[^A-Za-z0-9]
\s	    匹配空格 (包括换行符,制表符,空格符等)，相当于[\t\r\n\v\f]
\S	    匹配非空格的字符, 相当于[^\t\r\n\v\f]
</pre>


<script>

    // 字符类 演示,   [abc] 中任意 一个字符
    console.log('----[ ] 匹配字符集合-------')
    console.log('1-'+ /[abc]/.test('argh'))  // true, 集合里的字符,有一个字符 匹配就是 真
    console.log('2-'+ /[abc]/.test('bfuk'))  // true
    console.log('3-'+ /[abc]/.test('存c储'))  // true

    console.log('4-'+ /^[abc]$/.test('c存储'))  // false, 这里是精确匹配,要是集合的 一个字符
    console.log('5-'+ /^[abc]$/.test('c'))  // true, 精确匹配, 一个字符

    console.log('6-'+ /^[abc]$/.test('ab'))  // false, 精确匹配下, 我们是要 一个字符

    console.log('7-'+ /^[abc]{2}$/.test('ab'))  // true, 这里虽然是精确匹配, 但我们规定出现 2个匹配字符
    console.log('8-'+ /^[abc]{2}$/.test('ac'))  // true,
    console.log('8-'+ /^[abc]{2}$/.test('abc'))  // false, 规定出现 2个匹配字符,这里超了


    // 字符类   [a-z]的范围  只选1个字符
    console.log('----[ ] 里面加上 - 连字符-------')
    console.log('1-'+ /^[A-Z]$/.test('p'))  // false, 注意字母的 大小写, 小写p
    console.log('2-'+ /^[A-Z]$/.test('P'))  // true, 大写p

    console.log('3-'+ /^[0-9]$/.test(2))  // true, 精确匹配下, 匹配一个数字
    console.log('4-'+ /^[0-9]$/.test(22))  // false, 精确匹配下, 要一个数字,这里超了

    console.log('5-'+ /^[a-zA-Z0-9]$/.test(2))  // true
    console.log('6-'+ /^[a-zA-Z0-9]$/.test('p'))  // true
    console.log('7-'+ /^[a-zA-Z0-9]$/.test('P'))  // true

    // 看QQ号的例子, QQ号从 10000 开始
    console.log('----看QQ号的例子-------')
    console.log(/^[1-9][0-9]{4,}$/.test('576823139'))  // true
    console.log(/^[1-9][0-9]{4,}$/.test('57682313q'))  // false
    //    []代表一位数  []{}代表,余下的数要大于等于4位数
    // 这里第一位数要1到9,   以后的数是0到9


    // [ ] 里面加上 ^ 取反符号, 注意要写到中括号里面
    console.log('----[ ] 里面加上 ^ 取反符号-------')
    console.log(/[^0-9]/.test(2))  // false, 加上 ^ , 这里是除了数字以外的字符


    console.log('---- . 匹配除换行符之外的任何单个字符 -------')
    console.log('1-'+ /./.test('td'))  // true, 除换行符, 都可以
    console.log('2-'+ /./.test('t'))  // true
    console.log('3-'+ /./.test('\n'))  // false, 换行符,就是 假

    console.log('4-'+ /[.]/.test('t'))  // false, 加 [] 了


</script>
</body>
</html>
